package com.shop.cereshop.app.service.wallet;

import com.shop.cereshop.app.param.wallet.RechargeVO;
import com.shop.cereshop.app.param.wallet.RechargeResponseVO;
import com.shop.cereshop.commons.domain.wallet.Recharge;

import java.util.List;

/**
 * 充值服务接口
 * @author wang.yao
 * @date 2025-08-26
 */
public interface RechargeService {

    /**
     * 创建充值订单
     * @param rechargeVO 充值请求参数
     * @return 充值响应信息
     */
    RechargeResponseVO createRechargeOrder(RechargeVO rechargeVO);

    /**
     * 处理充值成功
     * @param rechargeNo 充值单号
     * @param thirdPartyOrderNo 第三方订单号
     * @return 是否成功
     */
    boolean handleRechargeSuccess(String rechargeNo, String thirdPartyOrderNo);

    /**
     * 处理充值失败
     * @param rechargeNo 充值单号
     * @param failReason 失败原因
     * @return 是否成功
     */
    boolean handleRechargeFail(String rechargeNo, String failReason);

    /**
     * 查询充值记录
     * @param buyerUserId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 充值记录列表
     */
    List<Recharge> getRechargeList(Long buyerUserId, Integer page, Integer size);

    /**
     * 查询充值详情
     * @param rechargeNo 充值单号
     * @return 充值详情
     */
    Recharge getRechargeDetail(String rechargeNo);

    /**
     * 取消充值订单
     * @param rechargeNo 充值单号
     * @param buyerUserId 用户ID
     * @return 是否成功
     */
    boolean cancelRechargeOrder(String rechargeNo, Long buyerUserId);
}
